﻿package com.components
{
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	import com.tools.SoundManager;
	
	/////////////////////////////////////////////////////////////////////////////////////////////////////////
	// PauseButton ::
	// - composant particulier qui définit le bouton 'pause' du player
	/////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	public class PauseButton extends PlayerButton
	{
		/////////////////////////////////////////////////////////////////////////////////////////////////////////
		// MEMBRES DE CLASSE
		/////////////////////////////////////////////////////////////////////////////////////////////////////////
		
		private var _soundManager	: SoundManager 	= SoundManager.getInstance();
		private var _isActive		: Boolean 		= false;
		
		/////////////////////////////////////////////////////////////////////////////////////////////////////////
		// CONSTRUCTEUR
		/////////////////////////////////////////////////////////////////////////////////////////////////////////
		
		function PauseButton( )
		{
			super();
			removeEventListener( MouseEvent.CLICK, handleMouseActions );
			addEventListener( MouseEvent.CLICK, overPlay );
		}
		
		/////////////////////////////////////////////////////////////////////////////////////////////////////////
		// METHODES PRIVEES : implémentation de l'interaction avec SoundManager
		/////////////////////////////////////////////////////////////////////////////////////////////////////////
		
		private function clickPlay( pEvt : MouseEvent ) : void
		{
			_soundManager.pauseSong( );
		}
		
		private function overPlay( pEvt : MouseEvent ) : void
		{
			trace("vous survolez actuellement PAUSE");
		}
		
		/////////////////////////////////////////////////////////////////////////////////////////////////////////
		// GETTER & SETTER
		/////////////////////////////////////////////////////////////////////////////////////////////////////////
		
		public function get isActive( ) : Boolean
		{
			return _isActive;
		}
		
		public function set isActive( val : Boolean ) : void
		{
			if ( val )
			{
				// on fait en sorte que si le bouton est actif, il récupère toute son interactivité
				addEventListener( MouseEvent.CLICK, handleMouseActions );
				addEventListener( MouseEvent.CLICK, clickPlay );
			}
			else
			{
				// on fait en sorte que lorsque le bouton est inactif
				// - ses états disponibles soient limités à 'up' / 'over' / 'down'
				// - il n'intéragit pas avec le SoundManager
				removeEventListener( MouseEvent.CLICK, handleMouseActions );
				removeEventListener( MouseEvent.CLICK, clickPlay );
			}
			_isActive = val;
		}
	}
}